sequencer (generator) IB/FB
Otázka od: Kalus Jozef Ing.
27. 9. 2002 14:32
nazdar,
potrebujem vytvorit v IB/FB sequencer pre id (myslim ze sa to tam nazyva
Generator), teda vytvorit ho viem ale akosi ho neviem priradit k danemu
fieldu, t.j. ked dam insert aby sa mi automaticky inkrementovalo id v db
(moze byt aj s medzerami v ciselnej rade )
takze priklad:
tabulka:
CREATE TABLE "users" (
"id" INTEGER NOT NULL, -- tu niekde mi to chyba
"login" VARCHAR(50) CHARACTER SET NONE NOT NULL,
"password" VARCHAR(50) CHARACTER SET NONE NOT NULL,
);
generator:
CREATE GENERATOR "user_id";
SET GENERATOR "user_id" TO 0;
nuz a co teraz ????
skusam to v IBExperte, tam je moznost vo vlastnostiach pola priradit
generator, ale ignoruje mi to a nic nepriradi ((
v Oracle sa musi zavoal generator rucne a potom sa vratena hodnota vklada do
id, ale tu by som privital keby sa to dalo stylom MS Access
help my
joka
Odpovedá: Ondrej Kelle
27. 9. 2002 14:18
> potrebujem vytvorit v IB/FB sequencer pre id (myslim ze sa to
> tam nazyva Generator), teda vytvorit ho viem ale akosi ho
> neviem priradit k danemu fieldu, t.j. ked dam insert aby sa mi
> automaticky inkrementovalo id v db (moze byt aj s medzerami
> v ciselnej rade )
>
> takze priklad:
>
> tabulka:
> CREATE TABLE "users" (
> "id" INTEGER NOT NULL, -- tu niekde mi to chyba
> "login" VARCHAR(50) CHARACTER SET NONE NOT NULL,
> "password" VARCHAR(50) CHARACTER SET NONE NOT NULL,
> );
Vytvor si trigger, ktorym zavolas funkciu GEN_ID (vygenerujes nove cislo) a
vysledok vlozis do zaznamu, napriklad takto:
CREATE GENERATOR GEN_USERS;
SET TERM !!;
CREATE TRIGGER NEW_USERS FOR USERS
BEFORE INSERT POSITION 0
AS
BEGIN
IF ((NEW.ID IS NULL) OR (NEW.ID = 0)) THEN
NEW.ID = GEN_ID(GEN_USERS, 1);
END!!
SET TERM ;!!
Je to popisane v dokumentacii k InterBase, napr. v Data Definition Guide.
HTH
TOndrej
Odpovedá: tomasand@quick.cz
27. 9. 2002 14:50
Ja to delam takto:
set term /;
create procedure mojeprocedure
returns (NEW_ID_K numeric(12,0))
as
begin
new_id_k = GEN_ID(GEN_ID_KONTAKT, 1);
EXIT;
end;/
set term ;/
Ve Tvem pripade bych to napsal do before insert
triggeru
Tomas Andrasko
----- Původní zpráva -----
Od: "Kalus Jozef Ing." <jozef.kalus@spordat.sk>
Datum: pátek, 27. září 2002 v 2:06 odp.
Předmět: sequencer (generator) IB/FB
> nazdar,
>
> potrebujem vytvorit v IB/FB sequencer pre id
> (myslim ze sa to tam nazyva
> Generator), teda vytvorit ho viem ale akosi
> ho neviem priradit k danemu
> fieldu, t.j. ked dam insert aby sa mi
> automaticky inkrementovalo id v db
> (moze byt aj s medzerami v ciselnej rade
> )
>
> takze priklad:
>
> tabulka:
> CREATE TABLE "users" (
> "id" INTEGER NOT NULL, -- tu
> niekde mi to chyba
> "login" VARCHAR(50) CHARACTER SET
> NONE NOT NULL,
> "password" VARCHAR(50) CHARACTER SET
> NONE NOT NULL,
> );
>
> generator:
> CREATE GENERATOR "user_id";
> SET GENERATOR "user_id" TO 0;
>
> nuz a co teraz ????
>
> skusam to v IBExperte, tam je moznost vo
> vlastnostiach pola priradit
> generator, ale ignoruje mi to a nic
> nepriradi ((
>
> v Oracle sa musi zavoal generator rucne a
> potom sa vratena hodnota vklada do
> id, ale tu by som privital keby sa to dalo
> stylom MS Access
>
> help my
>
> joka
>